﻿<!DOCTYPE html>
<html class="theme theme-white">
<head>
<meta charset="utf-8">
<title>redis学习---5种常见数据类型</title>
<link href="https://www.zybuluo.com/static/assets/template-theme-white.css" rel="stylesheet" media="screen">
<style type="text/css">

#wmd-preview h1  {
    color: #0077bb; /* 将标题改为蓝色 */
}</style>
</head>
<body class="theme theme-white">
<div id="wmd-preview" class="wmd-preview wmd-preview-full-reader"><div class="md-section-divider"></div><div class="md-section-divider"></div><h1 data-anchor-id="kzqf" id="redis学习-5种常见数据类型">redis学习---5种常见数据类型</h1><div class="md-section-divider"></div><h2 data-anchor-id="g0qe" id="目录">目录</h2><ul data-anchor-id="zk1u">
<li>简介</li>
<li>数据结构比对</li>
<li>key常见命令</li>
<li>String字符串类型</li>
<li>List列表类型</li>
<li>Set集合类型</li>
<li>Hash散列类型</li>
<li>ZSet数据类型</li>
</ul><div class="md-section-divider"></div><h2 data-anchor-id="taoh" id="1-简介">1. 简介：</h2><p data-anchor-id="4vap">redis支持的5种常见存储类型为：String、List、Set、Hash、ZSet</p><div class="md-section-divider"></div><h2 data-anchor-id="4ch7" id="2-数据结构比对">2. 数据结构比对</h2><table data-anchor-id="famw" class="table table-striped-white table-bordered">
<thead>
<tr>
 <th style="text-align:center;">数据类型</th>
 <th style="text-align:center;">结构存储的值</th>
 <th style="text-align:center;">存储结构</th>
</tr>
</thead>
<tbody><tr>
 <td style="text-align:center;">String字符串</td>
 <td style="text-align:center;">可以是字符串、整数或者是浮点数</td>
 <td style="text-align:center;">int、SDS</td>
</tr>
<tr>
 <td style="text-align:center;">List列表</td>
 <td style="text-align:center;">一个li链表、链表上的每一个节点都包含一个字符串</td>
 <td style="text-align:center;">3.2前linkedlis和ziplist，3.2之后quicklist</td>
</tr>
<tr>
 <td style="text-align:center;">Hash散列</td>
 <td style="text-align:center;">包含键值对的无序散列表</td>
 <td style="text-align:center;">数据量小用ziplist，其他用hashtable</td>
</tr>
<tr>
 <td style="text-align:center;">Set集合</td>
 <td style="text-align:center;">包含字符串的无序收集器，且唯一</td>
 <td style="text-align:center;">intset或者hashtable</td>
</tr>
<tr>
 <td style="text-align:center;">ZSet有序结合</td>
 <td style="text-align:center;">字符串成员和浮点数分值之间的有序映射，元素的排列顺序由分值的大小决定</td>
 <td style="text-align:center;">ziplis、skiplist+hashtable</td>
</tr>
</tbody></table><div class="md-section-divider"></div><h2 data-anchor-id="k814" id="3-key常见命令">3. Key常见命令</h2><table data-anchor-id="zgzb" class="table table-striped-white table-bordered">
<thead>
<tr>
 <th style="text-align:center;">命令格式</th>
 <th style="text-align:center;">说明</th>
</tr>
</thead>
<tbody><tr>
 <td style="text-align:center;">DEL key [key ...]</td>
 <td style="text-align:center;">删除给定的一个或多个 key</td>
</tr>
<tr>
 <td style="text-align:center;">EXISTS key</td>
 <td style="text-align:center;">检查给定 key 是否存在</td>
</tr>
<tr>
 <td style="text-align:center;">KEYS pattern</td>
 <td style="text-align:center;">查找所有符合给定模式 pattern 的 key</td>
</tr>
<tr>
 <td style="text-align:center;">TTL/PTTL key</td>
 <td style="text-align:center;">返回给定 key 的剩余生存时间</td>
</tr>
<tr>
 <td style="text-align:center;">EXPIRE key seconds</td>
 <td style="text-align:center;">为给定 key 设置生存时间</td>
</tr>
<tr>
 <td style="text-align:center;">TYPE key</td>
 <td style="text-align:center;">返回 key 所储存的值的类型</td>
</tr>
<tr>
 <td style="text-align:center;">RENAME key newkey</td>
 <td style="text-align:center;">将 key 改名为 newkey</td>
</tr>
</tbody></table><div class="md-section-divider"></div><h2 data-anchor-id="um9q" id="4-string字符串类型">4. String字符串类型</h2><div class="md-section-divider"></div><h3 data-anchor-id="yura" id="41-常用命令">4.1 常用命令</h3><table data-anchor-id="3vqv" class="table table-striped-white table-bordered">
<thead>
<tr>
 <th style="text-align:center;">命令格式</th>
 <th style="text-align:center;">说明</th>
</tr>
</thead>
<tbody><tr>
 <td style="text-align:center;">SET key value</td>
 <td style="text-align:center;">设置存在在给定键中的值</td>
</tr>
<tr>
 <td style="text-align:center;">GET key</td>
 <td style="text-align:center;">获取存储在给定键中的值</td>
</tr>
<tr>
 <td style="text-align:center;">DEL key [key ...]</td>
 <td style="text-align:center;">删除存储在给定键中的值</td>
</tr>
</tbody></table><p data-anchor-id="sbu8"><strong>SET key value [EX seconds] [PX milliseconds] [NX|XX]</strong></p><ul data-anchor-id="xl8w">
<li>EX second ：设置键的过期时间为 second 秒。 SET key value EX second 效果等同于 SETEX key second value </li>
<li>PX millisecond ：设置键的过期时间为 millisecond 毫秒。 SET key value PX <br>
millisecond 效果等同于 PSETEX key millisecond value 。</li>
<li>NX ：只在键不存在时，才对键进行设置操作。 SET key value NX 效果等同于 SETNX key value </li>
<li>XX ：只在键已经存在时，才对键进行设置操作</li>
</ul><div class="md-section-divider"></div><h3 data-anchor-id="0bs2" id="42-整形和浮点型操作命令">4.2 整形和浮点型操作命令</h3><table data-anchor-id="xbyy" class="table table-striped-white table-bordered">
<thead>
<tr>
 <th style="text-align:center;">命令格式</th>
 <th style="text-align:center;">说明</th>
</tr>
</thead>
<tbody><tr>
 <td style="text-align:center;">INCR key</td>
 <td style="text-align:center;">将 key 中储存的数字值增一</td>
</tr>
<tr>
 <td style="text-align:center;">INCRBY key increment</td>
 <td style="text-align:center;">将 key 中储存的数字值减一</td>
</tr>
<tr>
 <td style="text-align:center;">DEL key [key ...]</td>
 <td style="text-align:center;">删除存储在给定键中的值</td>
</tr>
</tbody></table><div class="md-section-divider"></div><h2 data-anchor-id="3w4u" id="5-list列表类型">5. List列表类型</h2><div class="md-section-divider"></div><h3 data-anchor-id="b94z" id="51-常用命令">5.1 常用命令</h3><table data-anchor-id="fhdo" class="table table-striped-white table-bordered">
<thead>
<tr>
 <th style="text-align:center;">命令格式</th>
 <th style="text-align:center;">说明</th>
</tr>
</thead>
<tbody><tr>
 <td style="text-align:center;">LPUSH key value [value ...]</td>
 <td style="text-align:center;">将一个或多个值 value 插入到列表 key 的表头</td>
</tr>
<tr>
 <td style="text-align:center;">RPUSH key value [value ...]</td>
 <td style="text-align:center;">将一个或多个值 value 插入到列表 key 的表尾</td>
</tr>
<tr>
 <td style="text-align:center;">LPOP key</td>
 <td style="text-align:center;">移除并返回列表 key 的头元素</td>
</tr>
<tr>
 <td style="text-align:center;">RPOP key</td>
 <td style="text-align:center;">移除并返回列表 key 的尾元素</td>
</tr>
<tr>
 <td style="text-align:center;">LRANGE key start stop</td>
 <td style="text-align:center;">返回列表 key 中指定区间内的元素，区间以偏移量 start 和 stop 指定</td>
</tr>
<tr>
 <td style="text-align:center;">LINDEX key index</td>
 <td style="text-align:center;">返回列表 key 中，下标为 index 的元素</td>
</tr>
</tbody></table><div class="md-section-divider"></div><h2 data-anchor-id="gji0" id="6-set集合类型">6. Set集合类型</h2><div class="md-section-divider"></div><h3 data-anchor-id="wjiv" id="61-常用命令">6.1 常用命令</h3><table data-anchor-id="sxux" class="table table-striped-white table-bordered">
<thead>
<tr>
 <th style="text-align:center;">命令格式</th>
 <th style="text-align:center;">说明</th>
</tr>
</thead>
<tbody><tr>
 <td style="text-align:center;">SADD key member [member ...]</td>
 <td style="text-align:center;">将一个或多个 member 元素加入到集合 key 当中，已经存在于集合的 member 元素将被忽略</td>
</tr>
<tr>
 <td style="text-align:center;">SMEMBERS key</td>
 <td style="text-align:center;">返回集合 key 中的所有成员</td>
</tr>
<tr>
 <td style="text-align:center;">SISMEMBER key member</td>
 <td style="text-align:center;">判断 member 元素是否集合 key 的成员</td>
</tr>
<tr>
 <td style="text-align:center;">RPOP key</td>
 <td style="text-align:center;">移除并返回列表 key 的尾元素</td>
</tr>
<tr>
 <td style="text-align:center;">LRANGE key start stop</td>
 <td style="text-align:center;">返回列表 key 中指定区间内的元素，区间以偏移量 start 和 stop 指定</td>
</tr>
<tr>
 <td style="text-align:center;">SREM key member [member ...]</td>
 <td style="text-align:center;">移除集合 key 中的一个或多个 member 元素，不存在的 member 元素会被忽略</td>
</tr>
<tr>
 <td style="text-align:center;">SUNION key [key ...]</td>
 <td style="text-align:center;">返回一个集合的全部成员，该集合是所有给定集合的并集</td>
</tr>
<tr>
 <td style="text-align:center;">SINTER key [key ...]</td>
 <td style="text-align:center;">返回一个集合的全部成员，该集合是所有给定集合的交集</td>
</tr>
</tbody></table><div class="md-section-divider"></div><h2 data-anchor-id="e6zc" id="7-hash散列类型">7. Hash散列类型</h2><div class="md-section-divider"></div><h3 data-anchor-id="w4s6" id="71-常用命令">7.1 常用命令</h3><table data-anchor-id="9pd9" class="table table-striped-white table-bordered">
<thead>
<tr>
 <th style="text-align:center;">命令格式</th>
 <th style="text-align:center;">说明</th>
</tr>
</thead>
<tbody><tr>
 <td style="text-align:center;">HSET key field value</td>
 <td style="text-align:center;">将哈希表 key 中的域 field 的值设为 value</td>
</tr>
<tr>
 <td style="text-align:center;">HGET key field</td>
 <td style="text-align:center;">返回哈希表 key 中给定域 field 的值</td>
</tr>
<tr>
 <td style="text-align:center;">HGETALL key</td>
 <td style="text-align:center;">返回哈希表 key 中，所有的域和值</td>
</tr>
<tr>
 <td style="text-align:center;">HDEL key field [field ...]</td>
 <td style="text-align:center;">删除哈希表 key 中的一个或多个指定域，不存在的域将被忽略</td>
</tr>
</tbody></table><div class="md-section-divider"></div><h2 data-anchor-id="oyxq" id="8-zset数据类型">8. ZSet数据类型</h2><div class="md-section-divider"></div><h3 data-anchor-id="ltg3" id="81-常用命令">8.1 常用命令</h3><table data-anchor-id="zp9d" class="table table-striped-white table-bordered">
<thead>
<tr>
 <th style="text-align:center;">命令格式</th>
 <th style="text-align:center;">说明</th>
</tr>
</thead>
<tbody><tr>
 <td style="text-align:center;">ZADD key score member [[score member]  ...]</td>
 <td style="text-align:center;">将一个或多个 member 元素及其 score 值加入到有序集 key 当中</td>
</tr>
<tr>
 <td style="text-align:center;">ZRANGE key start stop [WITHSCORES]</td>
 <td style="text-align:center;">返回有序集 key 中，指定区间内的成员</td>
</tr>
<tr>
 <td style="text-align:center;">ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]</td>
 <td style="text-align:center;">返回有序集 key 中，所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列</td>
</tr>
<tr>
 <td style="text-align:center;">ZREM key member [member ...]</td>
 <td style="text-align:center;">移除有序集 key 中的一个或多个成员，不存在的成员将被忽略</td>
</tr>
</tbody></table><div class="md-section-divider"></div><h2 data-anchor-id="xmn2" id="9-命令参考文档">9. 命令参考文档</h2><p data-anchor-id="1box"><a href="http://redisdoc.com/" target="_blank">http://redisdoc.com/</a></p><hr></div>
</body>
</html>